﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace dacli.modelos.dao
{
    class ExamenesDAO : EntidadDao
    {
        
        public Examenes examenes { get; set; }

        public Examenes asignarId(long id)
        {
            this.consultar("id=" + id);
            return this.examenes;
        }
        public ExamenesDAO(Examenes examenes)
            : base("examenes")
        {
            this.examenes = (Examenes)examenes.Clone();
        }
        public ExamenesDAO()
            : base("examenes")
        {
            
        }

        public  override long incluir()
        {
            string sql = "INSERT INTO " + this.tabla + " (nombre, examenes_categoria_id) values" +
                        "('" + examenes.nombre + "','" + examenes.examenesCategoria.id + "')";
            return conexion.ejecutar(sql);
        }

        public override long modificar()
        {
            string sql = "UPDATE " + this.tabla + " SET "
                        + "nombre ='" + examenes.nombre + "', "
                        + "examenes_categoria_id ='" + examenes.examenesCategoria.id + "' "
                        + "WHERE id =" + examenes.id;
            return conexion.ejecutar(sql);            
        }

        public override long eliminar()
        {
            string sql = "DELETE FROM " + this.tabla + " WHERE "
                        + "id =" + examenes.id;
            return conexion.ejecutar(sql);            
        }

        public override bool consultar(string filtro)
        {
            string sql = "SELECT * FROM " + this.tabla + " WHERE "
            + filtro;
            SqlDataReader reader = conexion.consultar(sql);
            if (reader.Read()) {
                this.examenes = new Examenes();
                this.examenes.id = reader.GetInt64(0);
                this.examenes.nombre = reader.GetValue(1).ToString();
                this.examenes.examenesCategoria = new ExamenesCategoriaDAO().asignarId(reader.GetInt64(2));
                reader.Close();
                return true;
            }
            return false;
        }

        public double getPrecio(string iden, string nombreExamen)
        {
            
            double precio = 0;
            String sql = "SELECT campo  FROM precios_tipo p INNER JOIN iden_precio ip ON ip.precios_tipo_id = p.id INNER JOIN iden i ON ip.iden_id = i.id WHERE i.nombre ='"+ iden +"'";
            SqlDataReader reader = conexion.consultar(sql);
            if (reader.Read())
            {                
               
                string tipoPrecio = reader.GetString(reader.GetOrdinal("campo"));
                reader.Close();
                string sqlExamen = "SELECT " + tipoPrecio + " FROM examenes WHERE nombre='" + nombreExamen + "'";
                SqlDataReader readerExamen = conexion.consultar(sqlExamen);
                if (readerExamen.Read())
                {
                    precio = readerExamen.GetDouble(0);
                }
            }
            return precio;
        }

    }
}
